package com.fanxuankai.boot.monitor;

import org.springframework.util.CollectionUtils;

/**
 * 通知者
 *
 * @param <T>
 * @author fanxuankai
 */
public interface Notifier<T extends Message> {
    /**
     * 通知
     *
     * @param message 消息
     */
    void notice(T message);

    /**
     * 消息转 markdown 格式文本
     *
     * @param message 消息
     * @return String
     */
    default String markdown(T message) {
        StringBuilder sb = new StringBuilder();
        sb.append("# ")
                .append(message.getTitle())
                .append("\n");
        if (message.getSubtitle() != null) {
            sb.append("## ")
                    .append(message.getSubtitle())
                    .append("\n\n");
        }
        if (!CollectionUtils.isEmpty(message.getContents())) {
            message.getContents()
                    .forEach(content -> sb.append("> ")
                            .append(content)
                            .append("\n\n"));
        }
        if (message.getDescription() != null) {
            sb.append(message.getDescription());
        }
        return sb.toString();
    }
}
